package com.system.boot.rbac.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.system.api.rbac.entity.po.SysRole;
import com.system.api.rbac.entity.vo.RoleListVo;
import jakarta.validation.Valid;
import org.springframework.validation.annotation.Validated;
import org.yang.common.core.exception.BaseException;
import org.yang.database.orm.entity.BaseQuery;
import org.yang.database.orm.entity.Options;

import java.util.List;

/**
 * @author: lslands
 * @description:
 * @version：v1.0
 * @date: 2024/6/2 18:42
 */
@Validated
public interface RoleService extends IService<SysRole> {

    /**
     * 判断名称和编码是否重复
     * @param companyId 企业Id
     * @param name 名称
     * @param code 编码
     * @author lslands
     * @date 2024/5/16 00:57
     * @throws BaseException 字段重复异常
     */
    void isExists(Long companyId,String name,String code) throws BaseException;

    /**
     * 角色列表树
     * @param companyId 企业Id
     * @param roleCodes 角色编码集
     * @return 角色树结构
     * @throws BaseException 空指针异常
     */
    List<RoleListVo> listTree(Long companyId, List<String> roleCodes) throws BaseException;


    /**
     * 角色列表
     * @param companyId 企业ID
     * @param roleCodes 角色编码
     * @return 角色列表
     * @throws BaseException 查询异常
     */
    List<Options<Integer>> listOptions(Long companyId, List<String> roleCodes) throws BaseException;
}
